package servlets;

import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import dominio.Sistema;

import entities.*;


/**
 * Servlet implementation class ProcesarRutinasServlet
 */
public class ProcesarRutinasServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ProcesarRutinasServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		
		if (request.getParameter("accion").equals("Cancelar")) {
			response.sendRedirect("MenuPrincipal.jsp");
		}

		if (request.getParameter("accion").equals("Volver")) {
			response.sendRedirect("MenuPrincipal.jsp");
		}
		
		if (request.getParameter("accion").equals("Buscar Cliente")) {
			
			if (Sistema.getInstancia().existeCliente(Integer.parseInt(request.getParameter("nroCliente"))) == false) {
				request.getRequestDispatcher(
						"BuscarClienteRutina.jsp?msg=" + "El cliente no existe")
						.forward(request, response);
			} else {
					Cliente cliente = Sistema.getInstancia().buscarClienteDoc(Integer.parseInt(request
						.getParameter("nroCliente")));
					DatosFisicos df = Sistema.getInstancia().buscarUltimoDFporDoc(cliente.getNroDoc());
					
					Rutina rutinaNew = Sistema.getInstancia().generarRutina(cliente, df);
					
					//Rutina rutina = Sistema2.generarRutina2(Integer.parseInt(request.getParameter("nroCliente")));;

					
					request.setAttribute("cliente", cliente);
					request.setAttribute("rutina", rutinaNew);
					request.getRequestDispatcher("GenerarRutinas4.jsp")
							.forward(request, response);
			}
		}
		
		
		
		if (request.getParameter("accion").equals("Guardar Rutina")) {
			System.out.println("nro rutina que vino de jsp: "+Integer.parseInt(request.getParameter("idRutina")));
			Rutina r = Sistema.getInstancia().buscarRutinaPorID(Integer.parseInt(request.getParameter("idRutina")));
			System.out.println("nro rutina en servlet: "+r.getIdRutina());
			
			List <ItemRutina> items = new ArrayList <ItemRutina>();
			//ItemRutina ir = new ItemRutina();
			int contador =0;
			String nombreEj = "ejlunes"+contador;
			String nombreRep = "replunes"+contador;
			String nombreCant = "cantlunes"+contador;
			
			
			Enumeration e = request.getParameterNames();
			System.out.println("Entro");
			while (e.hasMoreElements()){
				System.out.print("- "+e.nextElement()+" -");	
			}
			
			System.out.println("Salio");
			
			/*
			for(Enumeration e = request.getParameterNames(); e.hasMoreElements(); ){
                String attName = (String)e.nextElement();
                System.out.print("- "+attName+" -");
			}
			*/
			while (contador < 10){
				contador++;
				nombreEj = "ejlunes"+contador;
				nombreRep = "replunes"+contador;
				nombreCant = "cantlunes"+contador;
				//System.out.println("valor de ejercicio: "+request.getParameter(nombreEj));
				if (request.getParameter(nombreEj)!= ""){
					System.out.println("paso");
					//System.out.println(nombreCant);
					//System.out.println(nombreEj);
					//System.out.println(nombreRep);
					ItemRutina ir = new ItemRutina();
					ir.setEjercicio(Sistema.getInstancia().buscarEjercicioPorNombre(request.getParameter(nombreEj), r.getCliente().getNroDoc()));
					ir.setCantidad(Integer.parseInt(request.getParameter(nombreCant)));
					ir.setRepeticiones(Integer.parseInt(request.getParameter(nombreRep)));
					ir.setDia("lunes");
					items.add(ir);
				}
			}
			
			contador =0;
			

			while (contador < 10){
				
				contador++;
				nombreEj = "ejmartes"+contador;
				nombreRep = "repmartes"+contador;
				nombreCant = "cantmartes"+contador;
				if (request.getParameter(nombreEj)!= ""){
					ItemRutina ir = new ItemRutina();
					ir.setEjercicio(Sistema.getInstancia().buscarEjercicioPorNombre(request.getParameter(nombreEj), r.getCliente().getNroDoc()));
					ir.setCantidad(Integer.parseInt(request.getParameter(nombreCant)));
					ir.setRepeticiones(Integer.parseInt(request.getParameter(nombreRep)));
					ir.setDia("martes");
					items.add(ir);
					//System.out.println(ir.getEjercicio().getNombre());
				}
			}
			
			contador =0;
			
			
			while (contador < 10){
				contador++;
				nombreEj = "ejmiercoles"+contador;
				nombreRep = "repmiercoles"+contador;
				nombreCant = "cantmiercoles"+contador;
				if (request.getParameter(nombreEj)!= ""){
					ItemRutina ir = new ItemRutina();
					ir.setEjercicio(Sistema.getInstancia().buscarEjercicioPorNombre(request.getParameter(nombreEj), r.getCliente().getNroDoc()));
					ir.setCantidad(Integer.parseInt(request.getParameter(nombreCant)));
					ir.setRepeticiones(Integer.parseInt(request.getParameter(nombreRep)));
					ir.setDia("miercoles");
					items.add(ir);
				}
			}
			
			contador =0;
		
			while (contador < 10){
				contador++;
				nombreEj = "ejjueves"+contador;
				nombreRep = "repjueves"+contador;
				nombreCant = "cantjueves"+contador;
				if (request.getParameter(nombreEj)!= ""){
					ItemRutina ir = new ItemRutina();
					ir.setEjercicio(Sistema.getInstancia().buscarEjercicioPorNombre(request.getParameter(nombreEj), r.getCliente().getNroDoc()));
					ir.setCantidad(Integer.parseInt(request.getParameter(nombreCant)));
					ir.setRepeticiones(Integer.parseInt(request.getParameter(nombreRep)));
					ir.setDia("jueves");
					items.add(ir);
					//System.out.println(ir.getEjercicio().getNombre());
				}
			}
			
			contador =0;

			
			while (contador < 10){
				contador++;
				nombreEj = "ejviernes"+contador;
				nombreRep = "repviernes"+contador;
				nombreCant = "cantviernes"+contador;
				if (request.getParameter(nombreEj)!= ""){
					ItemRutina ir = new ItemRutina();
					ir.setEjercicio(Sistema.getInstancia().buscarEjercicioPorNombre(request.getParameter(nombreEj), r.getCliente().getNroDoc()));
					ir.setCantidad(Integer.parseInt(request.getParameter(nombreCant)));
					ir.setRepeticiones(Integer.parseInt(request.getParameter(nombreRep)));
					ir.setDia("viernes");
					items.add(ir);
				}
			}
			
			contador =0;

			
			while (contador < 10){
				contador++;
				nombreEj = "ejsabado"+contador;
				nombreRep = "repsabado"+contador;
				nombreCant = "cantsabado"+contador;
				if (request.getParameter(nombreEj)!= ""){
					ItemRutina ir = new ItemRutina();
					ir.setEjercicio(Sistema.getInstancia().buscarEjercicioPorNombre(request.getParameter(nombreEj), r.getCliente().getNroDoc()));
					ir.setCantidad(Integer.parseInt(request.getParameter(nombreCant)));
					ir.setRepeticiones(Integer.parseInt(request.getParameter(nombreRep)));
					ir.setDia("sabado");
					items.add(ir);
				}
			}
			
			/*
			contador =0;		
			while (contador < 10){
				contador++;
				nombreEj = "ejdomingo"+contador;
				nombreRep = "repdomingo"+contador;
				nombreCant = "cantdomingo"+contador;
				if (request.getParameter(nombreEj)!= ""){
					ItemRutina ir = new ItemRutina();
					ir.setEjercicio(Sistema.getInstancia().buscarEjercicioPorNombre(request.getParameter(nombreEj), r.getCliente().getNroDoc()));
					ir.setCantidad(Integer.parseInt(request.getParameter(nombreCant)));
					ir.setRepeticiones(Integer.parseInt(request.getParameter(nombreRep)));
					ir.setDia("domingo");
					items.add(ir);
				}
			}
			*/
			
			r.setItemsRutina(items);
			//r.setCliente(Sistema2.buscarClienteDoc(Integer.parseInt(request.getParameter("nroCliente"))));
			//Sistema2.getRutinas().add(r);
			
			System.out.println("------ JUSTO ANTES DE UPDATE RUTINA -------------");
			System.out.println("nro rutina: "+r.getIdRutina());
			System.out.println("cantidad de items: "+r.getItemsRutina().size());
			
			ItemRutina irp = new ItemRutina();
			Iterator <ItemRutina> i = items.iterator();
			while (i.hasNext()){
				irp = (ItemRutina) i.next();
				System.out.print(" -- "+irp.getEjercicio().getNombre()+" -- ");
			}
			
			Sistema.getInstancia().updateRutina(r);
			request.setAttribute("cliente", r.getCliente());
			request.setAttribute("rutina", r);
			RequestDispatcher rd = request
					.getRequestDispatcher("GenerarRutinas4.jsp?msg= Se guardo la rutina exitosamente");
			rd.forward(request, response);

		}
	}

}
